System and method for reliable multicast

ABSTRACT

A technique for reliable multicast involves identifying a client as an acknowledger of a wireless multicast packet, and having the acknowledger acknowledge receipt of the multicast packet. An example of a method according to the technique may include receiving a multicast packet, selecting a client associated with a destination of the multicast packet, identifying the client in the multicast packet, forwarding the multicast packet to wireless, and retrying forwarding the multicast packet with the client identified in the multicast packet if no acknowledgement is received from the client. An example of a system according to the technique may include a means for identifying a client, a means for putting the client mac in the header of a multicast packet, a means for sending the multicast packet with the client mac to a wireless multicast destination, and a means for receiving acknowledgement from the client associated with the client mac.

CROSS-REFERENCE TO RELATED APPLICATIONS

This Application claims the benefit of U.S. Provisional Application No. 60/272,025 filed on Oct. 13, 2005, which is incorporated by reference.

BACKGROUND

Between two wireless beacons, you could send a unicast packet, and receive an acknowledgement that follows every unicast packet. For multicast packets, there is typically no acknowledgement. In wired networks, this may not be a serious concern. However, if a wireless packet gets lost on air due to, by way of example but not limitation, collisions or interference, data is lost. Moreover, it would not be known whether retrying transmissions of multicast packets would be beneficial since there is no acknowledgement. So, multicast transmission typically does not include retrying transmission of multicast packets.

Although multicast traffic is efficient—since multicast packets require no acknowledgement from recipients, and no retry—wireless multicast data can be unreliable. This renders problematic the execution of certain applications that need relatively reliable data, such as, by way of example but not limitation, multicast video and multicast audio. Indeed, in dense deployments, multicast video applications are practically unusable.

Some ways to improve wireless multicast reliability require that multicast transmissions are essentially—or actually—turned into multiple unicast transmissions. For example, a system could require acknowledgement from all multicast packet recipients. As another example, a multicast packet could be converted into multiple unicast packets. These remedies may improve reliability, but would likely increase overhead and decrease efficiency. Multicast to unicast conversion is known to be costly. Acknowledgement solutions achieved with token passing or randomization are complex and, particularly in the case of randomization, unpredictable.

Another possible way to improve wireless multicast reliability is with media reservation schemes. Media reservation may be across full transmission time, i.e., Clear to Send (CTS) to self reserving for the full transmission time, but this does not solve for loss while packets are transmitted. Media reservation for every packet, i.e., CTS to self for every packet, is inefficient. Application layer solutions, on the other hand, have been implemented but solve the problem on the wrong layer. It would be desirable to provide wireless multicast functionality that is more efficient than that of these prior art systems, and more reliable than that of a system in which no acknowledgements are required.

The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.

SUMMARY

The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various embodiments, one or more of the above-described problems have been reduced or eliminated, while other embodiments are directed to other improvements.

A technique for reliable multicast involves identifying a client as an acknowledger of a wireless multicast packet, and having the acknowledger acknowledge receipt of the multicast packet. An example of a method according to the technique may include receiving a multicast packet, selecting a client associated with a destination of the multicast packet, identifying the client in the multicast packet, forwarding the multicast packet to wireless, and retrying forwarding the multicast packet with the client identified in the multicast packet if no acknowledgement is received from the client identified in the multicast packet. The client may be identified by, for example, putting the client's associated mac address in the header of the multicast packet.

An example of a system according to the technique may include a means for identifying a client, a means for putting the client mac in the header of a multicast packet, a means for sending the multicast packet with the client mac to a wireless multicast destination, and a means for receiving acknowledgement from the client associated with the client mac. The system may further include, for example, a means for receiving the multicast packet and a means for selecting the client from one or more clients that are in a multicast destination associated with the multicast packet.

Another example of a system according to the technique may include a client mac determination module for determining a mac address associated with a client device, a multicast packet acknowledgement module for placing the mac address in a header of a multicast packet with a multicast destination that includes the client device and receiving acknowledgement that the multicast packet was received at the client device, an 802.11 mac module, and a processor for executing the client mac determination module and the 802.11 mac module.

The proposed system can offer, among other advantages, improved reliability of wireless multicast transmissions. This can be accomplished in a wireless network that is relatively efficient compared to a wireless network that has multicast effectively disabled. Advantageously, the proposed system can be implemented without changing the current standard. These and other advantages of the present invention will become apparent to those skilled in the art upon a reading of the following descriptions and a study of the several figures of the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention are illustrated in the figures. However, the embodiments and figures are illustrative rather than limiting; they provide examples of the invention.

FIG. 1 depicts a system including a wireless access domain.

FIG. 2 depicts a computer system for use in the system of FIG. 1.

FIG. 3 depicts a flowchart of a method for reliable multicast in a wireless network.

FIG. 4 depicts a conceptual diagram of a wireless network.

FIG. 5 depicts a system that includes multicast packet acknowledgement.

FIG. 6 depicts a flowchart of a method for reliable multicast.

DETAILED DESCRIPTION

In the following description, several specific details are presented to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various embodiments, of the invention.

FIG. 1 depicts a system 100 including a wireless access domain. The system 100 includes a computer system 102, a network 104, and a wireless access domain 106. The system 100 may or may not include multiple wireless access domains. The computer system 102 may be practically any type of device that is capable of communicating with a communications network, such as, by way of example but not limitation, a workstation. The network 104 may be practically any type of communications network, such as, by way of example but not limitation, the Internet. The term “Internet ” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). The physical connections of the Internet and the protocols and communication procedures of the Internet are well known to those of skill in the art.

In a non-limiting embodiment, the computer system 102 may be running a program such as, by way of example but not limitation, ethereal, to decode, by way of example but not limitation, IEEE 802.11 standard packets encapsulated in TZSP that are received from the wireless access domain 106. In a non-limiting embodiment, the computer system 102 is connected to a wireless backbone network (not shown), either directly or indirectly through a wireless network.

In a non-limiting embodiment, the network 104 provides a Layer 2 path for Layer 3 traffic, preserving IP addresses, sessions, and other wired Layer 3 attributes as users roam throughout the wireless access domain 106. The network may or may not include a wireless backbone network, or be connected directly or indirectly to a wireless backbone network. Communications between the computer system 102 and the wireless access domain 106 are, therefore, Layer 3 traffic tunneled through Layer 2. Advantageously, by tunneling Layer 3 traffic at Layer 2, users stay connected with the same IP address and keep the same security and Quality of Service (QoS) policies from the wired network while they roam the wireless side. Since Layer 3 attributes are maintained, mobile devices that are connected to the wireless access domain 106 can retain persistent identities.

The seven layers of the Open System Interconnection (OSI) model, of which Layers 2 and 3 are a part, are well-known to those of skill in the relevant art, and are, therefore, not described herein in any substantial detail. It should be noted, however, that Layer 3 is known as the “Network Layer” because it provides switching and routing technologies, creating logical paths, known as virtual circuits, for transmitting data from node to node. Routing and forwarding are functions of this layer, as well as addressing, internetworking, error handling, congestion control and packet sequencing. Layer 2 is known as the “Data Link Layer ” because at Layer 2 data packets are encoded and decoded into bits; and Layer 2 furnishes transmission protocol knowledge and management and handles errors in the physical layer, flow control and frame synchronization. The data link layer is divided into two sublayers: The Media Access Control (MAC) layer and the Logical Link Control (LLC) layer. The MAC sublayer controls how a computer on the network gains access to the data and permission to transmit it. The LLC layer controls frame synchronization, flow control, and error checking.

In non-limiting embodiments, the wireless access domain 106 may be referred to as, by way of example but not limitation, a Local Area Network (LAN), virtual LAN (VLAN), and/or wireless LAN (WLAN). The wireless access domain 106 gives each user a persistent identity that can be tracked and managed, no matter where they roam. The wireless access domain 106 may have one or more associated snoop filters, which are described later with reference to FIG. 3. In an embodiment, the wireless access domain 106 may include one or more radios.

In the example of FIG. 1, the wireless access domain 106 includes access areas 108-1 to 108-N (hereinafter collectively referred to as access areas 108). The access areas 108 have characteristics that depend upon, among other things, a radio profile. A radio profile is a group of parameters such as, by way of example but not limitation, beacon interval, fragmentation threshold, and security policies. In an embodiment, the parameters may be configurable in common across a set of radios in one or more access areas 108. In another embodiment, a few parameters, such as the radio name and channel number, must be set separately for each radio. An example of the implementation of a wireless access domain, provided by way of example but not limitation, includes a Trapeze Networks “identity-aware ” Mobility Domain™.

In the example of FIG. 1, the following elements are associated with each of the access areas 108: Wireless exchange switches 110-1 to 110-N (hereinafter collectively referred to as wireless exchange switches 110), networks 112-1 to 112-N (hereinafter collectively referred to as networks 112), and access points 114-1 to 114-N (hereinafter collectively referred to as access points 114).

In an embodiment, the wireless exchange switches 110 swap topology data and client information that details each user's identity, location, authentication state, VLAN membership, permissions, roaming history, bandwidth consumption, and/or other attributes assigned by, by way of example but not limitation, an Authentication, Authorization, and Accounting (AAA) backend (not shown). In an embodiment, the wireless exchange switches 110 provide forwarding, queuing, tunneling, and/or some security services for the information the wireless exchange switches 110 receive from their associated access points 114. In another embodiment, the wireless exchange switches 110 coordinate, provide power to, and/or manage the configuration of the associated access points 114. An implementation of a wireless exchange switch, provided by way of example but not limitation, includes a Trapeze Networks Mobility Exchange™ switch. The Trapeze Networks Mobility Exchange™ switches may, in another implementation, be coordinated by means of the Trapeze Access Point Access (TAPA) protocol.

In an embodiment, the networks 112 are simply wired connections from the wireless exchange switches 110 to the access points 114. The networks 112 may or may not be part of a larger network. In a non-limiting embodiment, the networks 112 provides a Layer 2 path for Layer 3 traffic, preserving IP addresses, sessions, and other wired Layer 3 attributes as users roam throughout the wireless access domain 106. Advantageously, by tunneling Layer 3 traffic at Layer 2, users stay connected with the same IP address and keep the same security and Quality of Service (QoS) policies from the wired network while they roam the wireless side.

In a non-limiting embodiment, the access points 114 are hardware units that act as a communication hub by linking wireless mobile 802.11 stations such as PCs to a wired backbone network. In an embodiment, the access points 114 connect users to other users within the network and, in another embodiment, can serve as the point of interconnection between a WLAN and a fixed wire network. The number of users and size of a network help to determine how many access points are desirable for a given implementation. An implementation of an access point, provided by way of example but not limitation, includes a Trapeze Networks Mobility System™ Mobility Point™ (MP™) access point.

The access points 114 are stations that transmit and receive data (and may therefore be referred to as transceivers) using one or more radio transmitters. For example, an access point may have two associated radios, one which is configured for IEEE 802.11a standard transmissions, and the other which is configured for IEEE 802.11b standard transmissions. In a non-limiting embodiment, an access point transmits and receives information as radio frequency (RF) signals to and from a wireless client over a 10/100BASE-T Ethernet connection. The access points 114 transmit and receive information to and from their associated wireless exchange switches 110. Connection to a second wireless exchange switch provides redundancy.

A station, as used herein, may be referred to as a device with a media access control (MAC) address and a physical layer (PHY) interface to the wireless medium that comply with the IEEE 802.11 standard. As such, in a non-limiting embodiment, the access points 114 are stations. Similarly, the wireless client 116 may be implemented as a station. In alternative embodiments, a station may comply with a different standard than IEEE 802.11, and may have different interfaces to a wireless or other medium.

In operation, a wireless client 116 can roam from one of the access areas 108 to another of the access areas 108. For example, in the example of FIG. 1 the wireless client 116 moves from the access area 108-1 to the access area 108-N. In an embodiment, the wireless client 116 can maintain a single IP address and associated data sessions. The ability of the wireless client 116 to roam across the access areas 108 while maintaining a single IP address and associated data sessions may be referred to as subnet mobility. Advantageously, the system 100 may be implemented using identity-based networking, which is a technique that enforces network authorization attributes to the wireless client 116 based on client identity rather than the port or device through which the wireless client 116 connects to the network. This technique enables both a single persistent login and passport free roaming which permits the introduction of services such as voice to a wireless LAN.

FIG. 2 depicts a computer system 200 for use in the system 100 (FIG. 1). The computer system 200 may be a conventional computer system that can be used as a client computer system, such as a wireless client or a workstation, or a server computer system. The computer system 200 includes a computer 202, I/O devices 204, and a display device 206. The computer 202 includes a processor 208, a communications interface 210, memory 212, display controller 214, non-volatile storage 216, and I/O controller 218. The computer 202 may be coupled to or include the I/O devices 204 and display device 206.

The computer 202 interfaces to external systems through the communications interface 210, which may include a modem or network interface. It will be appreciated that the communications interface 210 can be considered to be part of the computer system 200 or a part of the computer 202. The communications interface 210 can be an analog modem, ISDN modem, cable modem, token ring interface, satellite transmission interface (e.g. “direct PC ”), or other interfaces for coupling a computer system to other computer systems.

The processor 208 may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. The memory 212 is coupled to the processor 208 by a bus 220. The memory 212 can be Dynamic Random Access Memory (DRAM) and can also include Static RAM (SRAM). The bus 220 couples the processor 208 to the memory 212, also to the non-volatile storage 216, to the display controller 214, and to the I/O controller 218.

The I/O devices 204 can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device. The display controller 214 may control in the conventional manner a display on the display device 206, which can be, for example, a cathode ray tube (CRT) or liquid crystal display (LCD). The display controller 214 and the I/O controller 218 can be implemented with conventional well known technology.

The non-volatile storage 216 is often a magnetic hard disk, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory 212 during execution of software in the computer 202. One of skill in the art will immediately recognize that the terms “machine-readable medium ” or “computer-readable medium ” includes any type of storage device that is accessible by the processor 208 and also encompasses a carrier wave that encodes a data signal.

The computer system 200 is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an I/O bus for the peripherals and one that directly connects the processor 208 and the memory 212 (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.

Network computers are another type of computer system that can be used in conjunction with the teachings provided herein. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory 212 for execution by the processor 208. A Web TV system, which is known in the art, is also considered to be a computer system, but it may lack some of the features shown in FIG. 2, such as certain input or output devices. A typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor.

In addition, the computer system 200 is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of operating system software with its associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage 216 and causes the processor 208 to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage 216.

Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing ” or “computing ” or “calculating ” or “determining ” or “displaying ” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.

The present invention, in some embodiments, also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.

The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language, and various embodiments may thus be implemented using a variety of programming languages.

FIG. 3 depicts a flowchart 300 of a method for reliable multicast in a wireless network. This method and other methods are depicted as serially arranged modules. However, modules of the methods may be reordered, or arranged for parallel execution as appropriate. FIG. 3 is intended to illustrate reliable multicast using the techniques described herein, such as adding an acknowledgement address to the header of a multicast packet. In a non-limiting embodiment, each of the modules may be carried out at an Access Point (AP). In alternative embodiments, one or more of the modules may be carried out remotely with respect to the AP.

In the example of FIG. 3, the flowchart 300 starts at module 302 with receiving a multicast packet. In a non-limiting embodiment, the multicast packet is 802.11-compatible. 802.11-compatible is intended to mean the multicast packet can be sent in accordance with, by way of example but not limitation, 802.11a, 802.11b, 802.11g, or other current or future 802.11 standards. It is to be understood that other wireless implementations other than 802.11 will likely have problems that can be reduced using the techniques described herein.

In the example of FIG. 3, the flowchart 300 continues at module 304 with selecting a client associated with the multicast destination of the multicast packet. The selection of the client may be by a number of algorithms or techniques that are described later with reference to FIG. 4. In a non-limiting embodiment, the selected client is intended to acknowledge receipt of the multicast packet.

In the example of FIG. 3, the flowchart 300 continues at module 306 with identifying the client in the header of the multicast packet. The header of an 802.11-compatible multicast packet sent from AP to client includes a Destination Address (DA), a Source Address (SA), a Basic Service Set IDentifier (BSSID), and other fields. The DA may be all 1's or some other multicast address. The SA is the AP's mac address and the BSSID is the AP's mac address. At module 306, an additional value is added to the header of the multicast packet. The additional value, in the example of FIG. 3, is a client mac address. In a non-limiting embodiment, the client mac identifies the client that will acknowledge the multicast packet. Advantageously, since a specific client is identified, well-known unicast reliability algorithms can be used to improve reliability at the client.

The additional value is not currently envisioned in the 802.11 standard, but there is sufficient unused space in the header of a multicast packet that the additional value can be added without becoming incompatible with respect to the 802.11 standard. The ability to decode the additional value may or may not require appropriately designed or configured chip sets that are 802.11 compliant.

In the example of FIG. 3, the flowchart 300 continues at module 308 with forwarding the multicast packet with the client identified in the header. The multicast packet is forwarded to the client, which is only a first client of one or more clients that are intended recipients of the multicast packet. A second client (not identified in the header of the multicast packet) that receives the same multicast packet as the first client will not acknowledge receipt of the multicast packet. Advantageously, since potentially fewer acknowledgements are sent, the system may have less traffic and improved efficiency. Assuming the first client was intelligently selected, the system can, in addition, retain good reliability.

In the example of FIG. 3, the flowchart 300 continues at decision point 310 where it is determined whether an acknowledgement has been received. The first client, which is identified in the header of the multicast packet, should send acknowledgement of the multicast packet in much the same manner as a unicast packet recipient would send acknowledgement. The system may or may not wait for a predetermined period of time, to ensure that the acknowledgement is not simply late, before determining that acknowledgement has not been received. If acknowledgement is received (310-Y), then the multicast packet is presumed to have arrived at its multicast destination and flowchart 300 ends.

In the example of FIG. 3, if at decision point 310 it is determined that acknowledgement has not been received (310-N), then the flowchart 300 continues at decision point 312 where it is determined whether a retry is desired. If a retry is desired (312-Y), then the flowchart 300 continues at module 308 and continues as described previously. In an alternative embodiment, the flowchart 300 could instead continue at module 304, where a new client could be selected. The determination as to whether a retry is desirable may be implemented in a number of ways.

One example of a retry decision-making technique is the maintenance of a counter. A retry threshold may be set that indicates the maximum number of times to retry before implementation of an error correction algorithm. If a retry has been attempted fewer than the threshold number, then a retry is attempted again. If not, a retry is not attempted. As another example, retransmission could be at a different data rate than before, in case the client has trouble receiving the multicast packet at a prior data rate. Retry algorithms are a well-studied area of wireless transmission technology, and any current or future algorithms could be implemented to achieve desired retry decision-making and effectiveness.

In the example of FIG. 3, if at decision point 312 it is determined that a retry is not desired (312-N), then the flowchart 300 ends at module 314 with implementing an error correction algorithm. It should be noted that the decision points 310, 312 could be considered a part of an error correction algorithm, either logically or in actual implementation. In any case, a number of error correction algorithms for either multicast or unicast error correction could be implemented by one of skill in the relevant art. For this reason, error correction algorithms are not described in any detail herein.

FIG. 4 depicts a conceptual diagram 400 of a wireless network. The conceptual diagram 400 includes a multicast packet 402, an access point 404, and wireless clients 406-1 to 406-N (hereinafter collectively referred to as wireless clients 406). The conceptual diagram 400 is intended to serve as an illustration while describing how to select a client acknowledger from among the wireless clients 406.

The access point 404 may wish to determine what client mac to place in the header of the multicast packet 402. In a first embodiment, the determination may be accomplished by comparing the Received Signal Strength Indicator (RSSI) of the wireless clients 406 and choosing the weakest. This may be desirable because it may be decided that if the weakest RSSI can reliably receive a multicast packet, then the stronger RSSI should also be able to reliably receive a multicast packet. The determination and storage of RSSI values is known to those of skill in the relevant art, and is not described in further detail herein. In the example of FIG. 4, wireless client 406-N is the farthest from the access point 404. In general, the farther a wireless client is from an access point, the weaker its RSSI. For the purposes of this example, it is assumed that the wireless client 406-N, since it is the farthest from the access point 404, has the weakest RSSI. Accordingly, the access point 404 may place the mac address of the wireless client 406-N in the header of the multicast packet 402, and forward the multicast packet 402 on to each of the wireless clients 406.

In a second embodiment, the determination may be accomplished by comparing the RSSI of the wireless clients 406 and choosing the strongest. In the example of FIG. 4, wireless client 406-2 is the nearest to the access point 404. In general, the closer a wireless client is to an access point, the stronger its RSSI. For the purposes of this example, it is assumed that the wireless client 406-2, since it is the closest to the access point 404, has the strongest RSSI. Accordingly, the access point 404 may place the mac address of the wireless client 406-2 in the header of the multicast packet 402, and forward the multicast packet 402 on to each of the wireless clients 406.

In a third embodiment, the determination may be accomplished by comparing the RSSI of the wireless clients 406 and choosing the average. In the example of FIG. 4, wireless client 406-1 is presumed to have the closest to average RSSI of the wireless clients 406. Accordingly, the access point 404 may place the mac address of the wireless client 406-1 in the header of the multicast packet 402, and forward the multicast packet 402 on to each of the wireless clients 406. It should be noted that some other value other than average could be used instead (such as mean, a weighted average that favors a wireless client that is farther or closer than average, or some other algorithm that favors a wireless client that is somewhere between farthest or nearest to the access point 404).

In a fourth embodiment, the determination may be accomplished by picking a client using a customized algorithm. For example, the algorithm may be defined to meet the specific needs of an enterprise. As another example, a wireless network may have certain clients that preferentially act as acknowledgers of receipt of multicast packets. As another example, the algorithm could rely upon deep packet investigation of packets from the wireless clients 406. Specifically, if an Address Resolution Protocol (ARP) is detected, the system could use data within the ARP packet to decide which client to use as an acknowledger of the multicast packet. (ARP is a protocol for mapping an IP address to a physical machine address that is recognized in the local network, as is known to those of skill in the relevant art.) In any case, the client selected could be the first one detected, the most recent one detected, or some other client.

In certain implementations, the system may know more or less about wireless clients or VLANs than in other implementations. For example, VLAN tags may be used to provide additional information about a multicast packet destination in a system that includes intelligent multicasting.

FIG. 5 depicts a system 500 that includes multicast packet acknowledgement. The system 500 includes an access point 502, a multicast packet 504, a wireless client 506, and an acknowledgement 508. It may be noted that the multicast packet 504 and acknowledgement 508 are transient and may not exist at a given time. The access point 502 and wireless client 506, on the other hand, comprise hardware, software, or both hardware and software components.

The access point 502 includes a client mac determination module 510, a multicast packet acknowledgement module 512, an 802.11 mac module 514, and a processor 516. The client mac determination module 510, as its name suggests, determines a client mac that is associated with the wireless client 506. The wireless client 506 may be one of a plurality of wireless clients that are intended recipients of the multicast packet 504. The way in which the client mac may be determined has been previously described.

The multicast packet acknowledgement module 512 waits for the acknowledgement 508. If acknowledgement is not received, the multicast packet acknowledgement module 512 may execute retry algorithms or error correction algorithms, as has been previously described. It may be noted that the retry algorithms and error correction algorithms may be executed at a location that is remote relative to the access point 502 in alternative embodiments.

The 802.11 mac module 514 is a module that allows for use of the 802.11 standards. The module may include timing synchronization procedures and any other necessary components for facilitating the sending and receipt of 802.11-compatible packets.

The multicast packet 504 includes a header and payload. The header includes several fields, including the client ID address field. The client ID address field includes the mac address of the wireless client 506. It may be noted that multicast packets sent to clients other than the client 506 (not shown) may include in the client ID address field the mac address of the wireless client 506. That is because, for illustrative purposes, the wireless client 506 is the selected acknowledger of the multicast packet 504.

The wireless client 506 includes an 802.11 mac module 518, a client acknowledgement module 520, and a processor 522 for executing the modules 518, 520. The 802.11 mac module 518 is similar to the 802.11 mac module 514, but is located on the client. The modules 514, 518 may be identical, may be initially identical but configured differently, or significantly different. The client acknowledgement module 520 is for reading the client ID address, determining whether the client ID address is the same as that of the wireless client 506, and generating an acknowledgement if it is determined that the client ID address is the same as that of the wireless client.

The acknowledgement 508 is sent from the wireless client 506 to the access point 502. In an embodiment, the acknowledgement 508 is a packet. Upon receipt, the access point 502 recognizes that the multicast packet was received, obviating the need for retry attempts or error correction.

FIG. 6 depicts a flowchart 600 of a method for reliable multicast. FIG. 6 is intended to illustrate reliable multicast using techniques described herein, such as placing a client mac address in the header of a multicast packet. In the example of FIG. 6, the flowchart 600 starts at module 602 with identifying a client, wherein the client is associated with a client mac address. The flowchart 600 continues at module 604 with putting the client mac address in the header of a multicast packet. The flowchart 600 continues at module 606 with sending the multicast packet with the client mac address to a wireless multicast destination. The flowchart ends at module 608 with receiving acknowledgement from the client associated with the client mac address.

As used herein, the term “embodiment ” means an embodiment that serves to illustrate by way of example but not limitation.

It will be appreciated to those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the scope of the present invention. It is intended that all permutations, enhancements, equivalents, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the true spirit and scope of the present invention. It is therefore intended that the following appended claims include all such modifications, permutations and equivalents as fall within the true spirit and scope of the present invention. 

1. A method comprising: receiving a multicast packet; selecting a client associated with a destination of the multicast packet; identifying the client in the multicast packet; forwarding the multicast packet to wireless; retrying forwarding the multicast packet with the client identified in the multicast packet if no acknowledgement is received from the client identified in the multicast packet.
 2. The method of claim 1, wherein the multicast packet has a header, and wherein the identifying the client in the multicast packet includes putting a client mac associated with the client in the header of the multicast packet.
 3. The method of claim 1, wherein selecting the client includes selecting from a plurality of clients that are part of a multicast destination of the multicast packet.
 4. The method of claim 1, wherein selecting the client includes picking a farthest client in a wireless domain.
 5. The method of claim 1, wherein selecting the client includes picking a nearest client in a wireless domain.
 6. The method of claim 1, wherein selecting the client includes picking a client at an average distance in a wireless domain.
 7. The method of claim 1, wherein selecting the client includes picking a client in a VLAN in which the multicast packet is transmitted.
 8. The method of claim 1, wherein selecting the client includes picking a client that is associated first.
 9. The method of claim 1, wherein selecting the client includes picking a client that is associated most recently.
 10. The method of claim 1, wherein selecting the client includes picking a client based upon an algorithm.
 11. The method of claim 1, wherein the multicast packet is an 802.11-compatible packet.
 12. The method of claim 1, further comprising using unicast reliability algorithms to improve reliability at the client.
 13. A system comprising: a means for identifying a client, wherein the client is associated with a client mac address; a means for putting the client mac address in the header of a multicast packet; a means for sending the multicast packet with the client mac address to a wireless multicast destination; a means for receiving acknowledgement from the client associated with the client mac address.
 14. The system of claim 13, further comprising: a means for receiving the multicast packet; a means for selecting the client from one or more clients that are in a multicast destination associated with the multicast packet.
 15. The system of claim 13, further comprising a means for sending from the client the acknowledgement that the multicast packet was received.
 16. The system of claim 13, wherein the multicast packet is an 802.11-compatible packet.
 17. A system comprising: a client mac determination module for determining a mac address associated with a client device; a multicast packet acknowledgement module for placing the mac address in a header of a multicast packet with a multicast destination that includes the client device; receiving acknowledgement that the multicast packet was received at the client device; an 802.11 mac module; a processor for executing the client mac determination module, the multicast packet acknowledgement module, and the 802.11 mac module.
 18. The system of claim 17, wherein the multicast packet is sent from an access point to a wireless client.
 19. The system of claim 17, wherein the multicast packet comprises a header, including: a multicast address; a sender address; a BSSID; a designated address identifying the client device.
 20. The system of claim 17, further comprising a wireless client having: an acknowledgement module for: reading the mac address in the header of the multicast packet; sending an acknowledgement if the mac address in the header of the multicast packet is identical to the wireless client's mac address; an 802.11 mac module; a processor for executing the acknowledgement module and the 802.11 mac module. 